perm filename KERMAC.TEX[1,3] blob
sn#554033 filedate 1980-12-03 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00008 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 % FONTS, CODES & SPECIAL CHARS. READ MAXTEX for documentation.
C00010 00003 % ADJUSTMENTS FOR ESPANOL/ENGLISH
C00012 00004 % GLUE, BOXES, SPACING, INDENTATION, PARAGRAPHS
C00018 00005 % UNDER(OVER)LINING, BOXIT, BRACING, TH
C00025 00006 % HACKS
C00028 00007 % DEVICES, PAGE NUMBERING, PAGE FORMAT
C00044 00008 % INITIALIZATIONS
C00053 ENDMK
C⊗;
% FONTS, CODES & SPECIAL CHARS. READ MAXTEX for documentation.
\chcode '45←5 % % ignores rest of line
\chcode '173←1 % { beginning of group
\chcode '176←2 % } end of group
\chcode '44←3 % $ begins math
\chcode '26←4 % ⊗ alignment tab
\chcode '43←6 % # parameter character
\chcode '136←7 % ↑ superscript escape
\chcode '1←8 % ↓ subscript escape
% Enormous font:
\font L←cmr40
% For BIG headlines; see \Tit
\font A←cmr18
% For headlines; see \tit
\font B←cmr12
% Dunhill font; see \dunhill
\font C←cmdunh
% 10pt; see \rm,\it,\sy,\sl,\bf,\tt,
% \ti,\teniu,\tenfib,\caps,\tensc
\font a←cmr10 \font b←cmi10 \font c←cmsy10 \font d←cms10 \font e←cmb10 \font f←cmtt
\font D←cmti10 \font E←cmu10 \font F←cmfib \font G←cmcsc \font H←cmsc10
% 9pt; see \rm,\it,\sy,\sl,\bf,\tt,
% \ti
\font g←cmr9 \font h←cmi9 \font i←cmsy9 \font j←cms9 \font k←cmb9 \font l←cmtt9
\font I←cmti9
% 8pt; see \rm,\it,\sy,\sl,\bf,\tt,
% \ti,\caps
\font m←cmr8 \font n←cmi8 \font o←cmsy8 \font p←cms8 \font q←cmb8
\font J←cmti8 \font K←cmssc8
% To complete 10,9,8 family fonts:
\font r←cmr7 \font s←cmi7 \font t←cmsy7
\font u←cmr6 \font v←cmi6 \font w←cmsy6
\font x←cmr5 \font y←cmi5 \font z←cmsy5
% Math. extended font
\font @←cmathx
% For weird characters; see \ms
\font <←ms25
% For graphics; see \grfx
\font >←grfx35
% Stanford Logo; see \stanlogo
\font ;←sta200
% Font family definitions:
\def\tenpoint{\def\rm{\:a}
\def\it{\:b}
\def\sy{\:c}
\def\sl{\:d}
\def\bf{\:e}
\def\tt{\:f}
\def\ti{\:D}
\def\caps{\:G}
\mathrm arx % 10,7,5
\mathit bsy
\mathsy ctz
\usertenpoint}
\def\ninepoint{\def\rm{\:g}
\def\it{\:h}
\def\sy{\:i}
\def\sl{\:j}
\def\bf{\:k}
\def\tt{\:l}
\def\ti{\:I}
\mathrm gux % 9,6,5
\mathit hvy
\mathsy iwz
\userninepoint}
\def\eightpoint{\def\rm{\:m}
\def\it{\:n}
\def\sy{\:o}
\def\sl{\:p}
\def\bf{\:q}
\def\ti{\:J}
\def\caps{\:K}
\mathrm mux % 8,6,5
\mathit nvy
\mathsy owz
\usereightpoint}
% Math extended font:
\mathex @
% Good for text:
\def\teniu{\:E}
\def\tenfib{\:F}
\def\tensc{\:H}
% Special fonts:
\def\dunhill{\:C}
\def\stanlogo{{\:;S}} %(font contains only one char.)
\def\ms{\:<}
\def\gfx{\:>}
% Definitions of odd characters:
\def\biglp{\mathopen{\vcenter{\hbox{\:@\char'0}}}}
\def\bigrp{\mathclose{\vcenter{\hbox{\:@\char'1}}}}
\def\#{{\sy\char'161}}
\def\${{\sy\char'177}}
\def\%{{\char'45}}
\def\\{{\sy\char4}}
% Font initializations (see \eight,nine,tenpoint):
\def\usertenpoint{\baselineskip 12pt
\dispskip 12pt plus 3pt minus 9pt
\dispaskip 6pt plus 3pt
\dispbskip 7pt plus 3pt minus 4pt
\rm}
\def\userninepoint{\baselineskip 11pt
\dispskip 11pt plus 3pt minus 8pt
\dispaskip 6pt plus 3pt
\dispbskip 6pt plus 3pt minus 3pt
\rm}
\def\usereightpoint{\baselineskip 10pt
\dispskip 9pt plus 3pt minus 7pt
\dispaskip 4pt plus 2pt
\dispbskip 5pt plus 2pt minus 1pt
\rm}
% ADJUSTMENTS FOR ESPANOL/ENGLISH
% The following two cancel each other:
\def\english{
\def\Chapter{Chapter}
\def\Theorem{Theorem}
\def\Lemma{Lemma}
\def\Corollary{Corollary}
\def\Proposition{Proposition}
\def\Proof{Proof}
\def\Remark{Remark}
\def\Contents{Contents}
\def\Plates{Plates}
\def\Notes{Notes}
\def\Page{Page}
\def\Figure{Figure}
\def\Table{Table}
\hyph 50
\chcode '32←12 % ~
\chcode '42←12 % "
\def\"{\accent'23}
\def\~{\accent'24}}
\def\espanol{\input espmac.tex[1,3] }
% GLUE, BOXES, SPACING, INDENTATION, PARAGRAPHS
% Boxes
\def\hjust{\hbox}
\def\vjust{\vbox}
\def\null{\hbox{}}
% Superpose (see manual)
\def\spose#1{\hbox to 0pt{#1\hskip 0pt minus 10000000pt}}
% Globs of glue (for justification)
\def\lft#1{#1\hfill}
\def\ctr#1{\hfill #1\hfill}
\def\rt#1{\hfill #1}
\def\top#1{#1\vfill}
\def\mid#1{\vfill #1\vfill}
\def\btm#1{\vfill #1}
% Justification; note these set up an hbox:
\def\ljustline#1{\hbox to size{#1\hss}}
\def\ctrline#1{\hbox to size{\hss #1\hss}}
\def\rjustline#1{\hbox to size{\hss #1}}
% Alignment
\def\lftcol#1{\vbox{\halign{\lft{##}\cr #1\cr}}}
\def\ctrcol#1{\ctrline{\vbox{\halign{\ctr{##}\cr #1\cr}}}}
\def\rtcol#1{\rjustline{\vbox{\halign{\rt{##}\cr #1\cr}}}}
% Same, but note #1 is set in math mode
\def\lpile#1{\vcenter{\halign{\lft{$## $}\cr #1}}}
\def\cpile#1{\vcenter{\halign{\ctr{$## $}\cr #1}}}
\def\rpile#1{\vcenter{\halign{\rt{$## $}\cr #1}}}
\def\halskip#1{\noalign{\vskip #1}}
% Spacing (see manual p.47)
\def\hquad{\hskip.5em{}} % half quad
\def\qquad{\quad\quad} % double quad
\def\xskip{\hskip 7pt plus 3pt minus 4pt}
\def\xxskip{\hskip 14pt plus 6pt minus 8pt}
\def\yskip{\par\penalty-50\vskip 3pt plus 3pt minus 2pt}
\def\yyskip{\par\penalty-100\vskip 6pt plus 6pt minus 4pt}
% Display paragraph; two levels:
\def\displaypar#1{{\def\noindent{}
\null\vskip \dispparskip
\save9\hbox to size{ }
\ctrline{\hbox par .8wd9{#1}}}
\vskip \dispparskip}
\def\displayypar#1{{\def\noindent{}
\null\vskip \dispparskip
\save9\hbox to size{ }
\ctrline{\hbox par .6wd9{#1}}}
\vskip \dispparskip}
% Use this to remove glue after a display:
\def\parunskip{\vskip -\dispparskip}
% Skip in \displaypar; cf \parskip
\def\dispparskip{.075vu}
% Indent 1/4 inch:
\def\indentqin{\indentparbysize{.25vu}}
% Indent 1/2 inch:
\def\indenthin{\indentparbysize{.5vu}}
% Indent one inch:
\def\indentin{\indentparbysize{1vu}}
% Take a guess:
\def\indentparbysize#1{\hangindent#1 after 0\hmode\hskip\indentcrownskip}
\def\indentcrownskip{0pt}
% Enumerate with hanging indentation: \enumerate1 <first par>\par
% \enumrind <second par keeping previous indentation>\par
% \enumrnext <subsequent par, advance number automatically>\par
\def\enumerate#1{\gdef\enumrfmt{\enumrnfmt}\setcount7 #1\enumrnext}
% Similar, to previous one, but use letters instead of numbers; e.g.,
% \enumelett{H} numbers: H, I, J, K, ... (it is not "une omelette")
\def\enumelett#1{\gdef\enumrfmt{\enumrlfmt}\setcount7 #1\enumrnext}
% Next two work for either letter or numbers:
\def\enumrnext{\xdef\junkie{\enumrfmt}
\save8\hbox{\junkie}
\advnce7
\noindent\hangindent 1wd8
\hmode\junkie\hskip 0pt}
\def\enumrind{\noindent\hangindent 1wd8 after0{}}
% Format used for hanging numbers or letters:
\def\enumrnfmt{{\bf\count7.\quad}}
\def\enumrlfmt{{\bf\char\count7.\quad}}
% Itemize with hanging mark: \itemize <first par>\par \itemzind <to keep
% indentation>\par \itemize <second marked par>\par
\def\itemize{\xdef\junkie{\itemzfmt}
\save8\hbox{\junkie}
\noindent\hangindent 1wd8
\hmode\junkie\hskip 0pt}
\def\itemzind{\noindent␈␈g;&+;Q↓∂;⊃aβ∞3S↔Iπ[{x4PI∃α≠␈∪7πQπ+O↔⊃ε3?IβF;∨'v9β7π⊗[M↓#∨+KK↔w#3eβ
β3π≡YβSKN;∨3*Ih4*f#↔~sO#↔7k6kSoncRαs∂FI≥E;βzs#∂+π∪xhP4(4PI∃αSzβCWQε β':β∂πCO#π1βf+SS↔∩β↔∨Ns';≥ε βCπ⊗∨KπεAm↓
↓uβ'v#↔;Qε3?I↓C⊃β?Iβ→$4(J)↓↓βfK;↔Mb↓
I↓jβ3↔S&+I1↓≠→↓uβεKπ∨⊗C 4Uc∪↔~f≠πC'&3Cπ∩→E
I≠≠nsO∂3∃bsF∪?cncR1↓
↔p4(&g≠π[∃Mc#?BβCπIπ≠'k↔]cKπ∨>+⊃↓Eβ↓AAAh($$Mc'→I≠onoπ+K¬αfc';↔↔∪↔π-ε∪πOW⊗{x4PH$%αf+3O↔←[7πM¬c3';.∪K↔πZβπO/∪'Sπ~αs3'v+K↔∞Yβπ∂∂syβxhP&s[⊗{cnsF∪?cncR1↓
↔p4($Mc[O/O↓↓5GG!d4(HJs#␈AβCπ∩βO'k/Zs#πv;';∪.sQ↓Es≠←⊃aε3?I↓≠oy
∨sx4(Mc[O/O↓αs∪O≠CCπ↔≠/'Cph(1∃α,r∩⊗IDzZ⊗ILb&:&t91α
⎇B&Q1∧∩Jε∞Lr≥1α$@4(4PI∃αWv#↔K3Ns∃β'rβ#?KOS?;S∞aβ7?&)h4*f#↔~s.s∪↔K&+cQ
∂Y∩sWv#↔K3Ns↔nsF∪?cm≠{y∪ph(4(J)α?[/∪3';*β'9βF{K'k}sSπ1εk?∪∃Ph*s∪.2s?[/∪S↔c"→Gm∩f{[↔KfK;↔nfC?cZ→G{y'p4(4Ph(%∃¬≠↔Qβ↔+3↔MεK?Wv!β?B↓#7πw+π1β/A9↓I
qQ%hhRs∪↔5c?cO!
Gng3?c]c#KWf*s#␈Cns[↔+3⊗sG≠/'A∨βP4(Mc[?GZs[O↑KAOC"↓
Fs7≠/'A∨βSzsG≠/'A∨βRs[↔+3↔zfCKW3/sx4(hP4(%*αO↔∃εkπ;W∞aβA9↓Mβ≠␈⊃βS#/≠∃h4Uc∪↔~f#;K∞≠↔m∩f≠#πI;9]I∩f∪Kπ∂/A∩s∂FI≥];(4(&f≠#πI;9]Q∩f∪Kπ∂/A∩s∂FI≥];→∪x4Uc∪↔~g+CK∞≠↔m∩f≠#πI;9]Q∩f∪Kπ∂/A∩s∂FI≥];_4(&f≠#πI;9]I∩f∪Kπ∂/A∩s∂FI≥];)∪x4Uc∪↔~f∪Kπ∂/Cns3.∪↔K≥c#KWf)β#↔N;#Q↓
qWCQ¬c#≠'fcx4(hP4(%*αS=β'KC∃β&C';∨~β3'/*↓OK⊃R↓NsSG[K∪xhRs∪↔5cS!
∂Y∩{nfC?c]c↔'∨G#C?'w!↓
Gwq∪x4Pα2α % HACKS
% Guess what:
\def\endpage{\par\vfill\eject}
\def\bye{\endpage\end}
\def\hmode{\ \unskip} % Enter horizontal mode
\def\¬{} % Kill spaces (dummy c. s.):
% Set internal parameters (see manual):
\def\trace{\chpar0←}
\def\jpar{\chpar1←}
\def\hyph{\chpar2←}
\def\ragged{\chpar8←}
\def\trmacro{\trace'355}
\def\trglue{\trace'77700147}
\def\trnorm{\trace'345}
% See errata.txt:
\def\ifzero#1#2\else#3{\ifpos#1{#3}\else{\neg#1
\ifpos#1{\neg#1 #3}\else{\neg#1 #2}}}
\def\neg#1{\setcount#1-\count#1}
% Check for null token: \ifnull<token>\then{true clause}\else{false clause}
\def\ifnull#1\then#2\else#3{\def\jnk{#1@}\if@\jnk{#2}\else{#3}}
% Advance +1 if \count#1 nonnegative; else by -1
\def\advnce#1{\ifpos#1{\advcount#1}\else{\advcount#1 by -1}}
% To handle pseudo-counters (so as to leave some \count'ers to the luser):
\def\setq#1#2{\xdef#1{#2}}
\def\addq#1#2{\setcount9 #2\advcount9 by #1\setq{#2}{\count9}}
\def\inivar#1#2{\setq{#1}{#2}\addq{-1}{#1}}
% Just to make sure
\let\hhsize=\hsize
\def\hsize{\Nooo! Use \sethsize. READ MAXTEX, please}
% This makes formulas like "$x:=x+1$" and "$f:X\to Y$" work
\chcode'272←'3072
\trnorm
% DEVICES, PAGE NUMBERING, PAGE FORMAT
% Other devices will be added soon:
\def\xgp{\gdef\rfactor{.7861941}\varunit \rfactor in}
% Do not set \hsize directly; use:
\def\sethsize#1{\columnsperpage{1}{#1}{0pt}{#1}}
% No. of columns = n = #1 (>0), #2 = width of column, #3 = glue between
% columns, #4 ≥ n*(#2) + (n-1)*(#3).
\def\columnsperpage#1#2#3#4{\hhsize #2
\setq\hpagesize{#4}
\setq\colsperpg{#1}
\setq\intercolglue{#3}
\setcount5 \colsperpg}
% Numbering; starts at page #1
\def\romannumbering#1{\setcount0 -#1}
\def\arabicnumbering#1{\setcount0 #1}
% Intended use of generated pages:
\def\oneside{\gdef\ddvnum{F}}
\def\bothsides{\gdef\ddvnum{T}}
% Page type (useless for KERMAC alone; used by PAPMAC,LETMAC)
\def\titlepage{\gdef\tpage{T}} % page with no heading
\def\normalpage{\gdef\tpage{F}} % heading typeset
% No-heading style; numbers at bottom (looks like BASIC)
\def\noheading{\endpage
\vsize 8.375vu %\epagesize-\btmnrspace
\gdef\thepage{\box5\cbotnum}
\let \titpage=\thepage
\let \titlemark=\titlemarknh}
% No-heading style; no numbers, full dimensions
\def\fullpages{\endpage
\vsize \epagesize
\gdef\thepage{\box5}
\let \titpage=\thepage
\let \titlemark=\titlemarknh}
% Page design (READ MAXTEX; see also manual)
\def\hshft{.125vu} % Horizontal shift
\def\epagesize{8.75vu} % vsize of vbox containing \thepage (or \titpage)
\def\btmnrspace{.375vu} % strip left for bottom numbers
\maxdepth 0pt
\topbaseline 0pt
% THE following are for internal handling of pages; use at own risk:
% Font for bottom numbers (default in all styles)
\def\botfnt{\teniu}
\def\cbotnum{\vskip 0pt\vbox to \btmnrspace{\btm
{\hbox to \hpagesize{\ctr{\botfnt\dcount0}}} }}
\def\dcount0{\ifpos0{--\hquad\count0\hquad--}\else{\count0}}
% Mark routine:
\def\titlemarknh#1#2{} % For compatiblity with PAPMAC
% Do #1 if \bothsides and even page; do #2 otherwise:
\def\ddvnmsel#1#2{\if T\ddvnum{\ifeven0{#1}\else{#2}}\else{#2}}
% Box the page and shift it:
\def\pastuppages{\setcount9\colsperpg
\advcount9 by -\count5
\if zero9{\save5\page}\else{\save5\hbox{\unbox5
\hskip\intercolglue\page}}
\advcount5 by -1}
\def\thevbox#1{\vbox to \epagesize{#1}}
\def\shftthepage#1{
\ddvnmsel{\moveleft\hshft\thevbox{#1}}{\moveright\hshft\thevbox{#1}} }
% Output routine:
\output{\pastuppages
\ifzero5{\save5\hbox{\hskip-\intercolglue\unbox5}
\baselineskip 0pt\lineskip0pt
\if T\tpage{\shftthepage{\titpage}\normalpage}
\else{\shftthepage{\thepage}}
\advnce0
\setcount5\colsperpg}
\else{}}
% INITIALIZATIONS
\xgp % device desired (READ MAXTEX)
% Page layout:
\sethsize{6.25vu} % See also \columnsperpage
\arabicnumbering{1} % see also \romannumbering{#}
\oneside % see also \bothsides
\normalpage % see also \titlepage
\noheading % see also \fullpages and PAPMAC (five
% other styles)
% page parameters (recall vu = device inches)
\topskip 5pt plus 1pt minus 1pt
\botskip 5pt plus 1pt minus 1pt
\parindent 40pt
\parskip .075vu plus 1pt
\lineskip 1pt
% Miscellaneous:
\english % see also \espanol
\tenpoint % start with these fonts (cf \usertenpoint)
% FOR internal use:
\setcount8 0 % no chapter declared
\def\consnum#1{#1} % compatibility with PAPMAC